package com.phonetools.commonutils.security

import java.nio.charset.Charset
import java.security.MessageDigest

private fun ByteArray.doMessageDigest(mode: String): ByteArray {
    return MessageDigest.getInstance(mode).digest(this)
}

/**
 * 计算md5
 * @return ByteArray
 * */
fun ByteArray.md5(): ByteArray {
    return doMessageDigest("MD5")
}

/**
 * String转ByteArray,计算md5
 * @param charset 输入字符编码
 * @return ByteArray
 * */
fun String.md5(charset: Charset = Charsets.UTF_8): ByteArray =
    this.toByteArray(charset).md5()

/**
 * 计算sha1
 * @return ByteArray
 * */
fun ByteArray.sha1(): ByteArray {
    return doMessageDigest("SHA-1")
}

/**
 * String转ByteArray,计算sha1
 * @param charset 输入字符编码
 * @return ByteArray
 * */
fun String.sha1(charset: Charset = Charsets.UTF_8): ByteArray =
    this.toByteArray(charset).sha1()

/**
 * 计算sha256
 * @return ByteArray
 * */
fun ByteArray.sha256(): ByteArray {
    return doMessageDigest("SHA-256")
}

/**
 * String转ByteArray,计算sha256
 * @param charset 输入字符编码
 * @return ByteArray
 * */
fun String.sha256(charset: Charset = Charsets.UTF_8): ByteArray =
    this.toByteArray(charset).sha256()